import request from '@/config/axios'
import type { Dayjs } from 'dayjs'

/** 审核计划区域信息 */
export interface AuditPlanArea {
  id: number // id
  levelId: number // 等级
  planId: number // 计划
  areaId: number // 区域
  auditStartDate: string | Dayjs // 审核开始日期
  auditEndDate: string | Dayjs // 审核结束日期
  auditUserId: number // 审核人
  status: number // 状态
}

/** 审核计划信息 */
export interface AuditPlan {
  id: number // id
  levelId: number // 等级
  belongType: number // 所属范围
  planDate: string | Dayjs // 年月
  excludeDate: string // 排除日期
  careProblem: string // 近期关注问题
  remark: string // 备注
  snedUserId?: number // 下发人
  status: number // 状态
  season: number // 季度
  auditPlanAreas?: AuditPlanArea[]
}

// 审核计划 API
export const AuditPlanApi = {
  // 查询审核计划分页
  getAuditPlanPage: async (params: any) => {
    return await request.get({ url: `/business/audit-plan/page`, params })
  },

  // 查询审核计划详情
  getAuditPlan: async (id: number) => {
    return await request.get({ url: `/business/audit-plan/get?id=` + id })
  },

  // 新增审核计划
  createAuditPlan: async (data: AuditPlan) => {
    return await request.post({ url: `/business/audit-plan/create`, data })
  },

  // 修改审核计划
  updateAuditPlan: async (data: AuditPlan) => {
    return await request.put({ url: `/business/audit-plan/update`, data })
  },

  // 删除审核计划
  deleteAuditPlan: async (id: number) => {
    return await request.delete({ url: `/business/audit-plan/delete?id=` + id })
  },

  /** 批量删除审核计划 */
  deleteAuditPlanList: async (ids: number[]) => {
    return await request.delete({ url: `/business/audit-plan/delete-list?ids=${ids.join(',')}` })
  },

  // 导出审核计划 Excel
  exportAuditPlan: async (params) => {
    return await request.download({ url: `/business/audit-plan/export-excel`, params })
  },

  // ==================== 子表（审核计划区域） ====================

  // 获得审核计划区域列表
  getAuditPlanAreaListByPlanId: async (planId) => {
    return await request.get({
      url: `/business/audit-plan/audit-plan-area/list-by-plan-id?planId=` + planId
    })
  },

  // 获得审核计划区域列表
  getAreaList: async () => {
    return await request.get({
      url: `/business/audit-plan/audit-plan-area/areaList`
    })
  },

  // 新增审核计划
  createTask: async (data) => {
    return await request.post({ url: `/business/audit-plan/createTask`, data })
  }
}
